﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using System.IO;
using System.Net;
using System.Web;

namespace HHMMS.FileServer
{
    /// <summary>
    /// 定义文件服务器上下载文件的方法。
    /// </summary>
    public interface IFileServerProvider
    {
        /// <summary>
        /// 上传文件到文件服务器后插入上传记录到数据库并返回记录ID。
        /// </summary>
        /// <param name="file">待上传的文件对象</param>
        /// <param name="folderName">保存的目录名称，如：'/Attachment/AA/'</param>
        /// <param name="attachTypeID">附件类型ID</param>
        /// <param name="creatorID">创建人ID</param>
        /// <param name="creatorName">创建人姓名</param>
        /// <param name="marks">扩展业务标记，4个</param>
        /// <returns></returns>
        AttachmentInfo UploadToFileServer(HttpPostedFile file, string folderName, string attachTypeID, string creatorID, string creatorName, params string[] marks);

        /// <summary>
        /// 上传文件到文件服务器后插入上传记录到数据库并返回记录ID。
        /// </summary>
        /// <param name="file">待上传的文件对象</param>
        /// <param name="folderName">保存的目录名称，如：'/Attachment/AA/'</param>
        /// <param name="attachTypeID">附件类型ID</param>
        /// <param name="creatorID">创建人ID</param>
        /// <param name="creatorName">创建人姓名</param>
        /// <param name="marks">扩展业务标记，4个</param>
        /// <returns></returns>
        AttachmentInfo UploadToFileServer(FileInfo file, string folderName, string attachTypeID, string creatorID, string creatorName, params string[] marks);

        /// <summary>
        /// 上传文件到文件服务器上指定目录，返回文件在文件服务器上的相对路径。
        /// </summary>
        /// <param name="file"></param>
        /// <param name="folderName">保存的目录名称，如：'/Attachment/AA/'</param>
        string UploadToFileServer(HttpPostedFile file, string folderName, string attachmentTypeID);

        /// <summary>
        /// 上传文件到文件服务器上指定目录，返回文件在文件服务器上的相对路径。
        /// </summary>
        /// <param name="file"></param>
        /// <param name="folderName">保存的目录名称，如：'/Attachment/AA/'</param>
        string UploadToFileServer(FileInfo file, string folderName, string attachmentTypeID);

        /// <summary>
        /// 根据文件ID删除指定数据库文件的记录并删除对应的文件。
        /// </summary>
        /// <param name="fileID"></param>
        void DeleteFile(string fileID);
    }
}
